// Copyright (C) 2019-2020 Zilliz. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distributed under the License
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
// or implied. See the License for the specific language governing permissions and limitations under the License.

#pragma once

#include <stdint.h>
#include <string>

namespace knowhere {

class ID {
 public:
    constexpr static int64_t kIDSize = 20;

 public:
    const int32_t*
    data() const {
        return content_;
    }

    int32_t*
    mutable_data() {
        return content_;
    }

    bool
    IsValid() const;

    std::string
    ToString() const;

    bool
    operator==(const ID& that) const;

    bool
    operator<(const ID& that) const;

 protected:
    int32_t content_[5] = {};
};

}  // namespace knowhere
